#ifndef OLED_UI_H
#define OLED_UI_H

#include <stdint.h>
#include "Components/basic.h"

// 显示配置参数
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define FONT_SIZE_SMALL 8
#define FONT_SIZE_LARGE 16
#define MAX_ITEMS 5
#define SCROLL_DELAY 200 // 滚动延时(ms)

// 菜单状态枚举
typedef enum
{
    MAIN_MENU,
    SUB_MENU,
    SETTINGS_MENU,
} ui_menu_state_t;

// 按键定义
typedef enum
{
    KEY_UP,
    KEY_DOWN,
    KEY_ENTER,
    KEY_BACK,
    KEY_NONE
} ui_key_code_t;

typedef void (*mode_action_callback_t)(void);

void uiRegisterStartCallback(uint8_t index, mode_action_callback_t callback);

// 注册停止回调函数
void uiRegisterStopCallback(uint8_t index, mode_action_callback_t callback);
// 设置模式状态
void uiSetModeStatus(uint8_t index, uint8_t status);
// 获取带状态的菜单项文本

// 初始化OLED界面系统
void uiInterfaceInit(void);

// 更新OLED显示内容 (需要周期性调用)
void uiInterfaceUpdate(void);

// // 处理按键输入
void uiHandleInput(ui_key_code_t key);

// 设置主菜单标题
void uiSetMainTitle(const char *newTitle);

// 设置菜单项文本
void uiSetMenuItem(uint8_t index, const char *newText);

bool uiShouldCheckKey();
ui_key_code_t uiGetKeyCode();

// // 获取当前菜单状态
// ui_menu_state_t getCurrentui_menu_state_t(void);

// // 获取当前选中的主菜单项
// uint8_t getCurrentSelection(void);

// // 获取当前选中的子菜单项
// uint8_t getSubMenuSelection(void);

#endif // OLED_UI_H